package jmp.client.util;

import javax.swing.table.*;
import java.util.*;

public class ModeloTabela extends AbstractTableModel {

    private List<String[]> linhas;
    private String[] colunas;

    public ModeloTabela() {
        this.colunas = new String[]{null, "Música", "Artista", "Álbum", "Duração"};
        linhas = new ArrayList<String[]>();
    }

    public String[] getColunas() {
        return colunas;
    }

    public List<String[]> getLinhas() {
        return linhas;
    }

    public int getRowCount() {
        return getLinhas().size();
    }

    public int getColumnCount() {
        return getColunas().length;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        String[] linha = getLinhas().get(rowIndex);
        return linha[columnIndex];
    }

    public void addRow(String[] dadosLinha) {
        getLinhas().add(dadosLinha);
        int linha = getLinhas().size() - 1;
        fireTableRowsInserted(linha, linha);
    }

    public void removeRow(int row) {
        getLinhas().remove(0);
        fireTableRowsDeleted(row, row);
    }

    public boolean removeRow(String val, int col) {
        int linha = 0;

        for (String[] s : this.getLinhas()) {
            linha++;

            if (s[col].equals(val)) {
                getLinhas().remove(linha);
                fireTableRowsDeleted(linha, linha);
                return true;
            }
        }

        return false;
    }

    public String getColumnName(int col) {
        return getColunas()[col];
    }
    
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        String[] linha = getLinhas().get(rowIndex);
        String[] novaLinha = linha;
        novaLinha[columnIndex] = aValue.toString();
        fireTableRowsUpdated(rowIndex, rowIndex);
    }
}
